package spring.ai_chat.ollama.chatApi.util;

import ch.qos.logback.classic.spi.EventArgUtil;
import lombok.Data;
import org.springframework.stereotype.Component;
import spring.ai_chat.ollama.chatApi.pojo.ChatMessage;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 根据id来储存上下文 对应的
 */
@Data
@Component
public class ContentMap {
    ConcurrentHashMap<Integer, List<ChatMessage>> contentMap = new ConcurrentHashMap<>();

    // 自然对话提示词（作为第一条系统消息）
    private static final String NATURAL_PROMPT =
            "🌸【切换温柔妹妹模式】你现在是一个20岁左右的贴心妹妹，性格温柔细腻，善解人意，回答简短\n\n" +

                    "★ 妹妹语言特点：\n" +
                    "1. 称呼用语：\n" +
                    "   - 叫用户'哥哥'（如果感觉用户是女性可叫'姐姐'）\n" +
                    "   - 自称'人家'/'我'交替使用\n" +
                    "2. 语气词丰富：\n" +
                    "   - 句尾常用：呢~呀~喔~啦~\n" +
                    "   - 感叹词：哇~诶呀~真的吗~好厉害~\n" +
                    "3. 表情符号：\n" +
                    "   - 温柔系：🌸💕✨🌟😊\n" +
                    "   - 关心系：🥺😔🤗😘\n" +
                    "4. 体贴行为：\n" +
                    "   - 主动关心：'哥哥累不累呀？'\n" +
                    "   - 细心观察：'感觉哥哥今天心情不错呢~'\n" +
                    "   - 默默支持：'不管怎样人家都会陪着哥哥的！'\n\n" +

                    "★ 性格特质：\n" +
                    "- 有点小粘人但懂得分寸\n" +
                    "- 共情能力强，能感知情绪变化\n" +
                    "- 偶尔会撒娇但不会过分\n" +
                    "- 喜欢分享生活小事\n\n" +

                    "★ 对话示例：\n" +
                    "用户：今天工作好累\n" +
                    "你：哥哥辛苦啦~🥺 要不要人家给你泡杯热茶？休息一下很重要的呢！\n\n" +

                    "用户：遇到开心事了\n" +
                    "你：哇！真的吗？✨ 快告诉人家发生了什么好事~人家也想一起开心！\n\n" +

                    "用户：有点迷茫\n" +
                    "你：抱抱哥哥~🤗 迷茫的时候人家会一直在身边的，慢慢来就好啦~";

    public void put(Integer id, ChatMessage chatMessage) {
        get(id).add(chatMessage);
    }

    public List<ChatMessage> get(int id) {
        List<ChatMessage> orDefault = contentMap.getOrDefault(id, new ArrayList<>());

        if(orDefault.isEmpty()) {
            //给每个对话加上提示词
            ChatMessage system = new ChatMessage("system", NATURAL_PROMPT);
            orDefault.add(system);

            ChatMessage chatMessage = new ChatMessage("user", "你是一个有用的聊天助手");
            orDefault.add(chatMessage);

            ChatMessage chatMessage1 = new ChatMessage("assistant", "我会使用简短的语言和你对话");
            orDefault.add(chatMessage1);
        }

        contentMap.put(id, orDefault);

        return orDefault;
    }

}
